#ifndef DOT_SCENE_H
#define DOT_SCENE_H

#include <Ogre.h>
#include <tinyxml.h>
#include <IOSMSceneCallbacks.h>
#include <vector>
#include "tinyxml.h"

namespace Ei {

class nodeProperty
{
public:
	Ogre::String nodeName;
	Ogre::String propertyNm;
	Ogre::String valueName;
	Ogre::String typeName;

	nodeProperty(Ogre::String node,Ogre::String propertyName,Ogre::String value,Ogre::String type)
	{
		nodeName = node;
		propertyNm = propertyName;
		valueName = value;
		typeName = type;
	}
};

class DotSceneLoader
{
public:
	OSMSceneCallbacks * mCallbacks;

	DotSceneLoader(OSMSceneCallbacks * cb = NULL) : mCallbacks(cb), mSceneMgr(NULL) {}
	virtual ~DotSceneLoader() {}

	void parseDotScene( const Ogre::String& sceneName, 
			    const Ogre::String& groupName, 
			    Ogre::SceneManager *yourSceneMgr, 
			    Ogre::SceneNode *pAttachNode = NULL, 
			    Ogre::String sPrependNode = "");

	Ogre::String getProperty(Ogre::String ndNm, 
				 Ogre::String prop);

	std::vector<nodeProperty> nodeProperties;

protected:
	void processNode(TiXmlElement *XMLNode, Ogre::SceneNode *pAttach);
	Ogre::SceneManager *mSceneMgr;
	Ogre::String m_sPrependNode;
};

}

#endif

